2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

Yarn Workspaces

작성: sangseek | 게시 날짜: 2026/04/28 | 조회수: 33
[ 편집불가 ]

Yarn Workspaces는 하나의 저장소(모노레포) 안에 여러 개의 패키지(예: 라이브러리, 웹앱, 서버 등)를 함께 관리하도록 도와주는 Yarn의 기능입니다. 의존성 설치와 패키지 간 연동을 중앙화하여 중복을 줄이고 개발 편의성을 높입니다. 주요 개념 - 모노레포 지원: 여러 관련 패키지를 하나의 리포지토리에서 관리하면서 각 패키지는 자체 package.json을 가집니다. - 단일 설치/잠금 파일: 루트에 하나의 yarn.lock(또는 Yarn Berry의 경우 다른 잠금 방식)을 사용해 의존성 일관성을 유지합니다. - 의존성 호이스팅(Hoisting): 공통 의존성은 루트 node_modules로 끌어올려(hoist) 중복 설치를 피하고 설치 속도를 개선합니다. - 내부 패키지 연결: 같은 워크스페이스 내 패키지들은 설치 시 심볼릭 링크로 연결되어 로컬 개발에서 즉시 참조 가능하며, 버전 간 일관성 유지가 쉽습니다. - workspace 프로토콜: 패키지 간 의존성을 package.json에 "workspace:1.0.0" 같은 형태로 지정해 로컬 패키지를 참조할 수 있습니다. 간단한 구조 예시 - 루트/ - package.json ({"private": true, "workspaces": ["packages/*"]}) - packages/ - pkg-a/ - package.json - pkg-b/ - package.json 동작 방식 요약 - 루트에서 yarn install을 실행하면 Yarn이 모든 워크스페이스의 의존성을 읽어 통합된 의존성 그래프를 만든 뒤 공통 의존성은 루트로 호이스트하고, 각 워크스페이스는 적절히 링크됩니다. - 워크스페이스 간 의존성은 실제로 로컬 패키지로 연결되어 패키지를 별도로 배포하지 않아도 개발 중 변경을 즉시 반영할 수 있습니다. 장점 - 의존성 중복 감소 및 빠른 설치 - 단일 락 파일로 의존성 일관성 보장 - 로컬 패키지 간 빠른 개발 피드백(심볼릭 링크) - 배포 전 패키지 간 호환성 테스트 용이 주의사항 및 차이점 - 루트 package.json에 "private": true 설정이 권장됩니다(실수로 루트를 npm에 퍼블리시하는 것을 방지). - Yarn v1과 Yarn v2(Berry)는 내부 동작(예: node_modules 사용 여부, Plug’n’Play 지원 등)이 다릅니다. v2 이상에서는 node_modules를 기본으로 사용하지 않으므로 일부 툴 호환성에 유의해야 합니다. - 호이스팅 동작 때문에 특정 패키지가 기대와 다른 버전의 의존성을 참조할 수 있으므로, 필요시 nohoist 설정이나 명시적 버전 고정이 필요할 수 있습니다. - CI 및 퍼블리시 워크플로우(패키지별 빌드/배포)는 별도 설정이 필요합니다(예: yarn workspaces foreach, lerna나 changesets 같은 보조 도구 사용). 요약하면, Yarn Workspaces는 여러 관련 패키지를 하나의 저장소에서 효율적으로 관리하고 의존성 중복을 줄이며 로컬 개발 및 일관된 빌드를 쉽게 만드는 기능입니다.
내용이 부정확하다면 싫어요를 누르세요.